angular.module('eYe')	
	.factory('Cache', function ($rootScope,Popup,Historique) {
		
		var Cache = {
			filesDl:0,
			nbFichiersManifest:0,
			statut:0
		};
		
		Cache.mettreAJour = function () {
			window.applicationCache.addEventListener('cached', Cache.appCachedHandler, false);
			window.applicationCache.addEventListener('updateready', Cache.updateReadyHandler, false);
			window.applicationCache.addEventListener('downloading', Cache.downloadingCacheHandler, false);
			window.applicationCache.addEventListener('noupdate', Cache.cacheNoUpdateHandler, false);
			window.applicationCache.addEventListener('progress', Cache.progressCacheHandler, false);
			window.applicationCache.addEventListener('error', Cache.cacheErrorHandler, false);
		};

		Cache.appCachedHandler = function () {
			console.log("AppCache cached");
			$('#container').trigger('cache_load');
			Cache.statut = 1;
			Popup.fermerPopup();
		};
		
		Cache.cacheNoUpdateHandler = function () {			
			$('#container').trigger('cache_load');
			Cache.statut = 1;
		};

		Cache.updateReadyHandler = function() {				
			Popup.fermerPopup();			
			console.log("AppCache update ready");			
			window.applicationCache.update();
			window.applicationCache.swapCache();
			//Historique.vider();
			setTimeout(function(){
				window.location.href = "./";
			},100);
		};
		
		Cache.progressCacheHandler = function() {		
			Cache.filesDl++;		
			Popup.progressionMiseAJour(Cache.filesDl/Cache.nbFichiersManifest*100);	
		 };
		 
		Cache.downloadingCacheHandler = function() {	

			$.ajax({
				url:'nbFichiersManifest.html',
				dataType:'html',
				type:'POST',
				async:false,
				success:function(data){
					Cache.nbFichiersManifest = parseInt(data)+2;
				}
			});			

			Popup.afficherPopup({typePopup:'miseajour',message:'Mise à jour de l\'application en cours :',fonctionReponse:'',btn_fermer:false,btn_oui_non:false});								
			console.log("AppCache downloading");
		};
			
		Cache.cacheErrorHandler = function(obj) {			
			console.log("AppCache error " + obj.type);
			$('#container').trigger('cache_load');
			Cache.statut = 1;
			Popup.erreurMiseAJour();
		};

		return Cache;
	});	